package com.yunke.vo.notification;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Map;

/**
 * 通知展示VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(name = "YunkeNotificationVo", description = "通知展示VO")
public class YunkeNotificationVo {

    @Schema(description = "通知ID")
    private Long notificationId;

    @Schema(description = "发送者用户ID")
    private Long fromUserId;

    @Schema(description = "发送者昵称")
    private String fromUserNickname;

    @Schema(description = "发送者头像")
    private String fromUserAvatar;

    @Schema(description = "通知类型")
    private Integer notificationType;

    @Schema(description = "通知类型名称")
    private String notificationTypeName;

    @Schema(description = "通知标题")
    private String title;

    @Schema(description = "通知内容")
    private String content;

    @Schema(description = "关联对象类型")
    private Integer relatedType;

    @Schema(description = "关联对象ID")
    private Long relatedId;

    @Schema(description = "关联对象信息")
    private Map<String, Object> relatedInfo;

    @Schema(description = "扩展数据")
    private Map<String, Object> extData;

    @Schema(description = "通知图标")
    private String notifyIcon;

    @Schema(description = "跳转URL")
    private String jumpUrl;

    @Schema(description = "是否已读")
    private Boolean isRead;

    @Schema(description = "优先级")
    private Integer priority;

    @Schema(description = "优先级名称")
    private String priorityName;

    @Schema(description = "发送状态")
    private Integer sendStatus;

    @Schema(description = "发送状态名称")
    private String sendStatusName;

    @Schema(description = "发送时间")
    private Long sendTime;

    @Schema(description = "发送时间格式化")
    private String sendTimeText;

    @Schema(description = "阅读时间")
    private Long readTime;

    @Schema(description = "过期时间")
    private Long expireTime;

    @Schema(description = "是否已过期")
    private Boolean isExpired;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "创建时间格式化")
    private String createTimeText;
} 